package xyc.szk.web.servlet.cookie;
/*
 * @Description: 1、第一次访问网站时，在浏览器上显示：欢迎访问本网站！
 *               2、再次访问本网站时，在浏览器上显示：您上次访问本网站的时间是：2021-04-09 14:30:20:367
 * @Author: 山志凯
 * @Date: 2021-04-09
 * @Time: 14:32
 */

import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.SimpleDateFormat;

@WebServlet("/last")
public class LastAccessServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        //从浏览器中获取cookie
        Cookie[] cookies = req.getCookies();
        //设置是否是第一次访问的标志
        boolean isFirst=true;//true表示第一次访问；false表示的是再次访问
        if (cookies!=null&&cookies.length!=0) {
            for (Cookie cookie : cookies) {
                //获取用来记录用户上次访问网站时间cookie名称
                String name = cookie.getName();
                if (name.equals("lastAccess")) {
                    //表示再次访问网站
                    isFirst=false;
                    String value = cookie.getValue();
                    //向浏览器输出：您上次访问本网站的时间是：2021-04-09 14:30:20:367
                    //对浏览器发送过来的URL编码进行一次解码操作
                    value=URLDecoder.decode(value,"utf-8");
                    resp.getWriter().write("您上次访问本网站的时间是："+value);
                    //更新cookie的时间值
                    Date date = new Date();
                    //将date日期格式化：yyyy/mm/dd HH:mm:ss.SSS
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/mm/dd HH:mm:ss.SSS");
                    String str_value=sdf.format(date);
                    //cookie中存储的值不能有空格等一些特殊字符，否则会报错：500
                    str_value=URLEncoder.encode(str_value,"utf-8");
                    cookie.setValue(str_value);
                    cookie.setMaxAge(10);
                    resp.addCookie(cookie);
                }
            }
        }
        if ((cookies==null||cookies.length==0||isFirst)) {
            //表示第一次访问
            resp.getWriter().write("欢迎访问本网站！");
            //记录当前访问网站的时间
            Date date = new Date();
            //将date日期格式化：yyyy/mm/dd HH:mm:ss.SSS
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/mm/dd HH:mm:ss.SSS");
            String str_value=sdf.format(date);
            //cookie中存储的值不能有空格等一些特殊字符，否则会报错：500
            str_value=URLEncoder.encode(str_value,"utf-8");
            Cookie lastAccess = new Cookie("lastAssess", str_value);
            lastAccess.setMaxAge(20);
            //将这个记录了用户访问网站时间的cookie发给浏览器
            resp.addCookie(lastAccess);//Set-Cookie:lastAccess
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}
